EC2 Image Builderのコンポーネントでパラメーターが利用できるようになってました

EC2 Image Builderのコンポーネントでパラメーターが利用できるようになってました

Clock Icon2021.08.16

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

中山(順)です

EC2 Image Builderで利用するコンポーネントにおいてパラメーターを利用できるようになりました。

EC2 Image Builder now supports parameters in components for creating custom images

例えば、コンポーネントでインストールするソフトウェアのバージョン指定をしたい時、新しいバージョンを作成したりコンポーネントを作り分ける必要性がかなり減ると思います。

具体的には、以下のようにパラメーターを定義できるようになりました。 このドキュメントではインストールするAWS CLI v2のマイナーバージョンを指定できるようにしています(実際にドキュメントを記述するときには適切な検証等を行うようにしてください)。

name: AWS CLI version 2
description: Installs the latest version of the AWS CLI version 2
schemaVersion: 1
parameters:
  - AWSCLIV2Version:
      type: string
      default: 2.2.29
      description: AWS CLI v2 Version.
phases:
  - name: build
    steps:
      - name: Install
        action: ExecuteBash
        inputs:
          commands:
            - sudo yum install unzip --quiet -y
            - curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-{{ AWSCLIV2Version }}.zip" -o "awscliv2.zip"
            - unzip awscliv2.zip
            - sudo ./aws/install

定義方法に関する詳細はドキュメントを確認してください。

Define and reference variables in AWSTOE

やってみた

今回は簡単な動作確認としたいと思いますので、雑にAWS CLI v2をAmazon Linux 2にインストールするコンポーネントを作成します。 その際、インストールするバージョンを指定できるように作成します。

ちなみに、Amazon Linux 2にはデフォルトでAWS CLI v1がインストールされています。

コンポーネントの作成

それでは、コンポーネントの作成を行います。

必要なパラメーターを入力し、今回のアップデートで利用できるようになったパラメーターを定義したドキュメントを記述します。

パイプラインの作成

コンポーネントを作成したら、パイプラインの作成を行います。

今回はマニュアル実行のパイプラインを定義します。

レシピを新規作成します。 この際、最初に作成したコンポーネントを利用します。

ベースとなるイメージは最新のAmazon Linux 2のAMIとします。

コンポーネントの指定はこのタイミングで行います。 コンポーネントを指定すると、パラメーターを設定するテキストボックスが表示されます。 何も入力しない場合はデフォルト値が適用されます。 今回は2.2.28を入力します(スクリーンショットは入力前)。

レシピに関するその他のパラメーターおよびInftastructure configuration / Distribution settiingsはデフォルトデフォルト設定とします。

パイプラインができたら手動で実行し、AMIの作成完了を待ちます。

動作確認

作成したAMIを起動してAWS CLIのバージョンを確認しました。 想定通り、指定したマイナーバージョンがインストールされていました。

まとめ

コンポーネントでパラメーターが利用できるようになったことにより、再利用性・汎用性を向上させることができるようになりました。 インストールするソフトウェアバージョンを変える度にコンポーネントのバージョンを作成したりコンポーネント自体の新規作成が不要になりそうですね。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.